#include <bits/stdc++.h>
using namespace std;

const int maxn = 1e4 + 3;

bool np[maxn];
vector<int> pri;

void pre(int n) { 
    for (int i = 2; i <= n; i++) { 
        if (!np[i]) 
            pri.push_back(i);
        for (int j = 0; j < pri.size(); j++) { 
            int k = i * pri[j];
            if (k > n) break;
            np[k] = 1;
        }
    }
}

short tms[5000];

void cha(int a, int x = 1) { 
    for (int i = 0; a != 1; i++) { 
        while (!(a % pri[i])) { 
            a /= pri[i];
            tms[i] += x;
        }
    }
}

struct BigNum { 
    int a[10010], len;
    BigNum() { 
        memset(a, 0, sizeof(a));
        a[0] = 1;
        len = 1;
    }
    BigNum &operator *=(const int x) { 
        int lst = 0;
        for (int i = 0; i < len; i++) { 
            a[i] = a[i] * x + lst;
            lst = a[i] / 10;
            a[i] %= 10;
        }
        while (lst) 
            a[len++] = lst % 10,
            lst /= 10;
        return *this;
    }
    void output() { 
        for (int i = len - 1; ~i; i--)
            cout << a[i];
    }
} ans;

int n;

int main() { 
    freopen("btn.in", "r", stdin);
    freopen("btn.out", "w", stdout);
    cin >> n;
    pre(n << 1);
    for (int i = n + 2; i <= n << 1; i++) 
        cha(i, 1);
    for (int i = 2; i <= n; i++)
        cha(i, -1);
    for (int i = 0; i < pri.size(); i++) { 
        while (tms[i]) { 
            ans *= pri[i];
            tms[i]--;
        }
    }
    ans.output();
}

